import axios from 'axios'
import { ElMessage } from "element-plus";

// 我们的项目环境可能有开发环境、测试环境和生产环境。我们通过node的环境变量来匹配我们的默认的接口url前缀。
let axiosUrl = ""
//开发环境
if (process.env.NODE_ENV === 'development') {
    axiosUrl = process.env.VUE_APP_BASE_API
    //生产环境
} else if (process.env.NODE_ENV == 'production') {
    axiosUrl = process.env.VUE_APP_BASE_API
    //测试环境
} else if (process.env.NODE_ENV == 'debug') {
    axiosUrl = process.env.VUE_APP_BASE_API
}
// 定义超时时间 单位秒
const TimeOut = 36
//全局基础配置
const http = axios.create({
    baseURL: axiosUrl,
    timeout: 5000
})

//设置请求拦截
http.interceptors.request.use((config: any) => {
    // console.log(config)
    //注入token
    if (localStorage.getItem('token')) {
        // 如果token存在 注入token
        // config.headers && (config.headers['Authorization'] = `Bearer ${localStorage.getItem('token')}`)
        config.headers['Authorization'] = `Bearer ${localStorage.getItem('token')}`
    }
    return config
}, (err) => {
    return Promise.reject(err)
})

//设置响应拦截
http.interceptors.response.use((res: any) => {
    console.log(res)
    //根据success的成功与否决定下面的操作
    if (res.data.success) {
        return res.data
    } else {
        ElMessage({
            message: res.data.message,
            type: 'error',
        })
        return Promise.reject(new Error(res.data.message))
    }

}, (err) => {
    //提示错误信息
    ElMessage({
        message: err.message,
        type: 'error',
    })
    return Promise.reject(err);
})
export default http